package org.dandsoft.blackbox.mapreduce.processor;

/**
 * Диспетчер процессоров обеспечивает контроль за обеспечением контроль
 * за выдачей процесоров.
 *
 * @author Vilyuzhanin Denis (Fin)
 */
public interface OperationProcessorDispatcher {

    /**
     * получить процессор
     *
     * @param isWait  true - ожидать процессор пока не появится свободный. false - не ожидать, если свободных
     *                нет то результат null.
     * @param timeout время ожидания
     * @return Возвращает процессор или null если свободных нет
     */
    OperationProcessor getProcessor(boolean isWait, long timeout);

    /**
     * Освободить процессор
     *
     * @param processor Ссылка на процессор.
     */
    void releaseProcessor(OperationProcessor processor);
}
